const fs = require('fs');

// 如何把node的api转化成promise
function promisify(fn) {
  // 这个是一个高阶函数
  return function (...agrs) {
    return new Promise((resolve, reject) => {
      fn(...agrs, (err, data) => {
        if (err) {
          return reject(err);
        }
        resolve(data);
      });
    });
  };
}

function promisifyAll(obj) {
  // Reflect.ownKeys(obj)
  Object.keys(obj).forEach((fn) => {
    if (typeof obj[fn] === 'function') {
      obj[fn + 'async'] = promisify(obj[fn]);
    }
  });
  return obj;
}
